# Makefile for console-build UnderC C++ interpreter
# vs 1.2.4 Can also build as a shared library, if SO is set
# vs 1.2.9 Builds with Mingw 2 (GCC 3.2)

OBJ = tparser.o function_match.o class.o code.o common.o \
      directcall.o dissem.o engine.o expressions.o \
      function.o breakpoints.o tokens.o keywords.o \
      mangle.o mstring.o operators.o os.o subst.o \
      table.o templates.o hard_except.o  \
      types.o program.o uc_tokens.o lexer.o main.o \
      errors.o utils.o imports.o ex_vfscanf.o ucri.o \
	  iostrm.o any_itoa.o

NAME = ucc
DEFINES = -D_CONSOLE
NO_READLINE=1

LFLAGS=-lsupc++ -lstdc++ -ldl
CFLAGS= -Wno-deprecated -D__GTHREAD_HIDE_WIN32API -D_FAKE_IOSTREAM -Wno-write-strings

ifdef DEBUG
CFLAGS := -g $(CFLAGS)
else
#CFLAGS = -O1 -Wno-deprecated -D__GTHREAD_HIDE_WIN32API
CFLAGS := -O2 $(CFLAGS)
ifdef DYNAMIC
LFLAGS := -Wl,-E $(LFLAGS)
endif
endif

ifndef NO_READLINE
DEFINES := $(DEFINES) -D_USE_READLINE
LFLAGS := $(LFLAGS) -lreadline -lncurses
ifndef BSD
LFLAGS := $(LFLAGS) -ldl
endif
endif

ifdef STATIC
LFLAGS := $(LFLAGS) -static
endif

ifdef SO
LFLAGS := $(LFLAGS) -shared
OBJ := $(OBJ) dll_entry.o
# DEFINES = $(DEFINES) -D_USRDLL
DEFINES = -D_USRDLL -D_USE_READLINE
NAME = ucc124.so
endif

ifdef GTK
LFLAGS := $(LFLAGS) `gtk-config --libs`
DEFINES = -D_CONSOLE -D_USE_READLINE  -D_LINK_GTK
endif

ucc: $(OBJ)
	c++ -o $(NAME) $(OBJ) $(LFLAGS)

%.o: %.cpp
	c++ -c $(CFLAGS) $(DEFINES) $<

%.o: %.c
	cc -c $(CFLAGS) $(DEFINES) $<
	
tparser.cpp: parser.y
	bison -y -d parser.y; cp y.tab.c tparser.cpp; cp y.tab.h uc_tparser.h

tparser.o: tparser.cpp

clean: 
	rm *.o

lib:
	g++ -o ../lib/string_imp.dll -shared -Wl,-export-dynamic ../lib/string_imp.cpp

function_match.o: function_match.cpp uc_function_match.h \
       uc_common.h uc_templates.h

class.o: class.cpp uc_class.h uc_common.h \
   uc_directcall.h uc_operators.h uc_opcodes.h uc_tparser.h uc_std_utils.h

code.o: code.cpp uc_code.h uc_common.h uc_opcodes.h uc_tparser.h

common.o: uc_common.h uc_function_match.h uc_tparser.h uc_code.h \
	uc_opcodes.h uc_engine.h

directcall.o: directcall.cpp uc_directcall.h uc_common.h \
        uc_opcodes.h uc_directcall.h uc_mangle.h uc_hard_except.h uc_os.h

dissem.o: dissem.cpp uc_common.h \
        uc_opcodes.h uc_breakpoints.h	

engine.o: engine.cpp uc_engine.h uc_common.h uc_errors.h \
        uc_opcodes.h uc_directcall.h uc_breakpoints.h uc_hard_except.h

expressions.o: expressions.cpp uc_expressions.h uc_common.h \
         uc_function_match.h uc_tparser.h uc_operators.h uc_directcall.h

function.o: function.cpp uc_function.h uc_common.h uc_opcodes.h \
         uc_module.h
  
breakpoints.o: breakpoints.cpp uc_breakpoints.h uc_common.h \
         uc_module.h uc_opcodes.h uc_tokens.h uc_std_utils.h uc_os.h

tokens.o: tokens.cpp uc_tokens.h uc_utils.h

keywords.o: keywords.cpp uc_common.h \
       uc_tparser.h

mangle.o: mangle.cpp uc_mangle.h uc_common.h

operators.o: operators.cpp uc_operators.h uc_common.h \
        uc_tparser.h

os.o: os.cpp uc_os.h

subst.o: subst.cpp

table.o: table.cpp uc_table.h

templates.o: templates.cpp uc_templates.h uc_common.h \
         uc_tparser.h uc_std_utils.h

hard_except.o: hard_except.cpp uc_hard_except.h

types.o: types.cpp uc_types.h uc_common.h \
       uc_templates.h

program.o: program.cpp uc_program.h uc_common.h \
       uc_module.h uc_errors.h uc_utils.h

uc_tokens.o: uc_tokens.cpp uc_tokenstream.h uc_common.h \
       uc_module.h uc_version.h uc_errors.h

lexer.o: lexer.cpp uc_common.h \
      uc_tparser.h uc_keywords.h uc_operators.h uc_input.h uc_tokenstream.h

main.o:  main.cpp uc_common.h \
      uc_breakpoints.h uc_module.h uc_tokenstream.h uc_engine.h uc_mangle.h \
      uc_directcall.h uc_keywords.h uc_operators.h uc_program.h uc_utils.h \
      uc_input.h uc_version.h uc_errors.h

errors.o: errors.cpp uc_errors.h uc_common.h \
      uc_input.h

imports.o: imports.cpp uc_imports.h uc_common.h \
      uc_mangle.h uc_os.h

ucri.o: ucri.cpp uc_module.h uc_directcall.h uc_program.h uc_imports.h

dll_entry.o: dll_entry.cpp uc_module.h uc_engine.h uc_main.h uc_errors.h uc_directcall.h uc_input.h

ex_vfscanf.o: uc_ex_vfscanf.h

utils.o: utils.cpp uc_utils.h uc_classlib.h

mstring.o: mstring.cpp uc_mstring.h uc_iostrm.h





 










